package jay.home.bet.misc;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import java.util.regex.Pattern;

public abstract class Util
{
	public static String uuid()
	{
		return UUID.randomUUID().toString();
	}
	
	public static String uuid2()
	{
		Double d = Math.random();
		d *= 100000D;
		String r = "" + d.intValue();
		
		Double d2 = Math.random();
		d2 *= 10D;
		String r2 = "" + d2.intValue();
		
		r = r + date2String2(new Date()) + r2;
		return r;
	}
	
	/**
	 * 为支付平台接口生成一个订单号, 不能用uuid, 因为支付平台限制了只能有30个以内的字符(=.=#!)
	 * @return
	 */
	public static String billno()
	{
		String s = uuid();
		return s.substring(1, 17);
	}
	
	private static DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	/**yyyy-mm-dd hh:mm:ss*/
	public static Date string2Date(String date)
	{
		Date result;
		try
		{
			result = format.parse(date);
		} catch (ParseException e)
		{
			e.printStackTrace();
			result = new Date();
		}
		return result;
	}
	/**yyyy-mm-dd hh:mm:ss*/
	public static String date2String(Date date)
	{
		return format.format(date);
	}
	
	private static DateFormat format3 = new SimpleDateFormat("yyMMddHHmmss");
	private static String date2String2(Date date)
	{
		return format3.format(date);
	}
	
	private static DateFormat format2 = new SimpleDateFormat("yyyyMMdd");
	/**yyyyMMdd*/
	public static String shortDate(Date date)
	{
		return format2.format(date);
	}
	
	private void testDateFormat()throws Exception
	{
		DateFormat f = DateFormat.getDateInstance(DateFormat.FULL);
		System.out.print(f.format(new Date()));//2007年3月27日 星期二
	}
	
//	http://blog.csdn.net/gubaohua/archive/2006/01/10/575488.aspx
	private void testDateFormat2()throws Exception
	{
		DateFormat f = new SimpleDateFormat("dd/MM h:mma");
		System.out.print(f.format(new Date()));//2007年3月27日 星期二
	}
	
	public static void main(String[] args)
	{
//		Date date = string2Date("2007-03-12 12:30:45");
//		String a = date2String(date);
//		System.out.println(date + a);
//		
//		System.out.println(yesterday());
		System.out.println(uuid2());
	}
	
	/**
	 * 获取今天的最后一秒来当作明天的第一秒来使用 即23:59:59
	 * @return 今天的最后一秒
	 */
	public static String tomorrow()
	{
		Date date = new Date();
		date.setHours(23);
		date.setMinutes(59);
		date.setSeconds(59);
		return date2String(date);
	}
	
	/**
	 * 获取今天的第一秒的时刻来当作昨天的最后一秒使用， 即00:00:00
	 * @return 今天的第一秒
	 */
	public static String yesterday()
	{
		Date date = new Date();
		date.setHours(0);
		date.setMinutes(0);
		date.setSeconds(0);
		return date2String(date);
	}
	
	public static Double toDouble( String str )
	{
		Double d = null;
		if("none".equals(str))return null;//这个判断是为Bot作的, 暂时如此了, 虽然写的不好.
		if ( str == null || str.equals("") )
		{
			return 0d;
		}
		
		try
		{
			d = Double.parseDouble( str );
		}
		catch(Exception e)
		{
			e.printStackTrace();
			return 0d;
		}
		return d; 
		
	}
	
	/**
	 * 根据输入的字符串, 转化成int, 
	 * @param aint aint须是三位以内字符串
	 * @return  如果为null或包含非数字字符, 则返回int值0
	 */
	public static int toInt(String aint)
	{
		if(aint == null) return 0;
		if(!Pattern.matches("[0-9]{1,3}", aint))return 0;//最少1位整数, 最多三位整数
		int r = Integer.parseInt(aint);
		return r;
	}
}
